namespace NGIS.Model
{
	public interface IModelBehavior
	{
		bool addModelDatasetItem(ref ModelDatasetItem pDataset);

		bool removeModelDatasetItem(ref ModelDatasetItem pDataset);

		int getModelDatasetItemCount();

		bool getModelDatasetItem(int idx, ref ModelDatasetItem pDataset);

		bool getModelDatasetItem(string pName, ref ModelDatasetItem pDataset);

		bool updateModelDatasetItem(int idx, ref ModelDatasetItem pDataset);

		bool addModelState(ref ModelState pState);

		bool removeModelState(ref ModelState pState);

		int getModelStateCount();

		bool getModelState(int idx, ref ModelState pState);

		bool getModelState(string pStateId, ref ModelState pState);

		bool updateModelState(int idx, ref ModelState pState);

		bool updateModelState(string pStateId, ref ModelState pState);

		bool addModelStateTransition(string pFromStateId, string pToStateId);

		bool addModelStateTransition(ref ModelState pFromState, ref ModelState pToState);

		bool removeModelStateTransition(string pFromStateId, string pToStateId);

		bool removeModelStateTransition(ref ModelState pFromState, ref ModelState pToState);

		int getModelStateTransitionCount();

		bool getModelStateTransition(int idx, ref ModelState pFromState, ref ModelState pToState);

		bool getModelStateTransition(int idx, ref ModelStateTransition pStateTransition);

		bool existModelStatetTransition(string pFromStateId, string pToStateId);

		bool existModelStatetTransition(ref ModelState pFromState, ref ModelState pToState);

		bool updateModelStateTransition(int idx, string pFromStateId, string pToStateId);

		bool addProcessParameter(ModelParameter processparameter);

		bool getProcessParameter(string key, ref ModelParameter parameter);

		int getProcessParameterCount();

		bool removeProcessParameter(ModelParameter processparameter);

		bool updateProcessParameter(ModelParameter processparameter);

		bool addControlParameter(ModelParameter processparameter);

		bool getControlParameter(string key, ref ModelParameter parameter);

		int getControlParameterCount();

		bool removeControlParameter(ModelParameter controlparameter);

		bool updateControlParameter(ModelParameter controlparameter);

		bool compareOther(IModelBehavior pBehavior, ref string obj, ref string name);
	}
}
